package com.yupi.yupicturebackend.common;

import com.yupi.yupicturebackend.exception.ErrorCode;

/**
 * 对于BaseResponse而言，每次接口返回值时，都要手动new一个BaseResponse对象并传入参数，比较麻烦
 * 可以创建一个工具类ResultUtils，提供成功调用和失败调用的方法，支持灵活地传参，简化调用过程
 */
public class ResultUtils {

    /**
     * 成功
     * @param data  数据
     * @return      响应
     * @param <T>   数据类型
     */
    public static <T> BaseResponse<T> success(T data) {
        return new BaseResponse<>(0, data, "ok");
    }

    /**
     * 失败
     * @param errorCode 错误码
     * @return          响应
     */
    public static BaseResponse<?> error(ErrorCode errorCode) {
        return new BaseResponse<>(errorCode);
    }

    /**
     * 失败
     * @param code      错误码
     * @param message   错误信息
     * @return          响应
     */
    public static BaseResponse<?> error(int code, String message) {
        return new BaseResponse<>(code, null, message);
    }

    /**
     * 失败
     * @param errorCode    错误码
     * @param message      响应
     * @return
     */
    public static BaseResponse<?> error(ErrorCode errorCode, String message) {
        return new BaseResponse<>(errorCode.getCode(), null, message);
    }
}
